// 折叠tokens，将#号和/里的token整合
export default function nestTokens(tokens) {
    var nestTokens = [];
    // 定义一个栈结构：存放小tokens，
    var sections = []
    var collector = nestTokens
    // 定义一个收集器：开始指向nestTokens这个结果数组
    // 收集器的指向会变化，当遇见#，收集器指向这个token的下标为2的新数组
    var collector = nestTokens
    // 遍历tokens
    tokens.forEach(element => {
        let token = element
        switch (token[0]) {
            case '#':
                // 收集器里放入token
                collector.push(token);
                // 入栈
                sections.push(token);
                //收集器换为下标为2的数组['#','name',[]]
                collector = token[2] = [];
                break;
            case "/":
                // 出栈 pop()会返回弹出的项
                sections.pop();
                // 改变栈结构栈顶,那一项下标为2的数组
                collector = sections.length > 0 ? sections[sections.length - 1][2] : nestTokens;
                break;
            default:
                collector.push(token);
        }
    });

    // for (let i = 0; i < tokens.length; i++) {
    //     let token = tokens[i];
    //     switch(token[0]){
    //         case '#':
    //             // 收集器里放入token
    //             collector.push(token);
    //             // 入栈
    //             sections.push(token);
    //             //收集器换为下标为2的数组['#','name',[]]
    //             collector=token[2]=[];
    //             break;
    //         case "/":
    //             // 出栈 pop()会返回弹出的项
    //             sections.pop();
    //             // 改变栈结构栈顶,那一项下标为2的数组
    //             collector=sections.length>0?sections[sections.length-1][2]:nestTokens;
    //             break;
    //         default:
    //             collector.push(token);
    //     }

    // }
    return nestTokens
}